package com.styletransfer.model;

import java.util.Date;

/**
 * 收藏实体类
 * 
 * 这个类对应数据库中的favorite表，用于存储用户的收藏记录。
 * 用户可以收藏风格、组合或作品，通过type字段区分不同类型的收藏。
 * 每个属性都与数据库表中的列相对应。
 */
public class Favorite {
    
    private Long id;             // 收藏ID，主键
    private Long userId;         // 用户ID
    private Long targetId;       // 目标ID（风格ID、组合ID或作品ID）
    private Integer type;        // 收藏类型：1-风格，2-组合，3-作品
    private Date createTime;     // 创建时间
    
    // 非数据库字段，用于前端展示
    private Style style;         // 风格信息（当type=1时）
    private Combination combination; // 组合信息（当type=2时）
    private Work work;           // 作品信息（当type=3时）
    
    // 构造函数
    public Favorite() {
    }
    
    // Getters and Setters
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getUserId() {
        return userId;
    }
    
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    
    public Long getTargetId() {
        return targetId;
    }
    
    public void setTargetId(Long targetId) {
        this.targetId = targetId;
    }
    
    public Integer getType() {
        return type;
    }
    
    public void setType(Integer type) {
        this.type = type;
    }
    
    public Date getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    
    public Style getStyle() {
        return style;
    }
    
    public void setStyle(Style style) {
        this.style = style;
    }
    
    public Combination getCombination() {
        return combination;
    }
    
    public void setCombination(Combination combination) {
        this.combination = combination;
    }
    
    public Work getWork() {
        return work;
    }
    
    public void setWork(Work work) {
        this.work = work;
    }
    
    @Override
    public String toString() {
        return "Favorite{" +
                "id=" + id +
                ", userId=" + userId +
                ", targetId=" + targetId +
                ", type=" + type +
                '}';
    }
}
